import router from "@/router";
import store from "@/store";
import ACCESS_ENUM from "@/access/accessEnum";
import checkAccess from "@/access/checkAccess";

/**
 * 前置路由守卫，自动获取登录信息及判断是否登录、是否有权限
 */
router.beforeEach(async (to, from, next) => {
  /**
   * 权限等级
   * 管理员>普通用户>游客
   * 1、页面无需权限即可访问=>无需登录
   * 2、页面用户角色方可访问=>普通用户登录
   * 3、页面管理员角色方可访问=>管理员登录
   */
  //获取登录态
  console.log("登录信息", store.state.user.loginUser);
  let loginUser = store.state.user.loginUser;
  //未登录获取登录信息，自动获取登录信息
  if (!loginUser.userRole) {
    console.log("未登录判断！！！");
    await store.dispatch("user/getLoginUser");
  }
  // 重新赋值，刷新用户登录信息
  loginUser = store.state.user.loginUser;
  const needAccess = (to.meta?.access as string) ?? ACCESS_ENUM.NOT_LOGIN;
  //页面非游客可访问
  if (needAccess !== ACCESS_ENUM.NOT_LOGIN) {
    /* //访问了非游客页面，判断用户状态为未登录
        if (!loginUser.userRole) {
          //重定向到登录页，且保存未登录前跳转的页面
          next(`/user/login?redirect=${to.fullPath}`);
          return;
        }*/
    // 如果没登陆，跳转到登录页面
    if (!loginUser.userRole || loginUser.userRole == ACCESS_ENUM.NOT_LOGIN) {
      next(`/user/login?redirect=${to.fullPath}`);
      return;
    }
    //  已登录,但在该页面无权限查看
    if (!checkAccess(loginUser, needAccess)) {
      next("/noAuto");
      return;
    }
  }
  //页面游客可访问
  next();
});
